Skip to content
This repository was archived by the owner on Apr 8, 2026. It is now read-only.

Add OAuth2 server for partners to retrieve user tokens#2092

Draft
skelz0r wants to merge 1 commit intodevelopfrom
features/oauth-connect
Draft

Add OAuth2 server for partners to retrieve user tokens#2092
skelz0r wants to merge 1 commit intodevelopfrom
features/oauth-connect

Conversation

@skelz0r
Copy link
Copy Markdown
Member

@skelz0r skelz0r commented Jan 16, 2026

Allow software vendors (like Démarches Simplifiées) to retrieve API Entreprise tokens from users with their explicit consent.

Flow:

  1. User clicks "Connect API Entreprise" on partner app
  2. Redirected to custom OAuth login page
  3. Authenticates via ProConnect (government SSO)
  4. Selects which tokens to share on consent page
  5. Redirected back with authorization code
  6. Partner exchanges code for access/refresh tokens
  7. Partner calls /oauth/me to get selected API tokens (with JWT)

Key features:

  • Custom OAuth login page with partner name
  • Token selection during consent
  • /oauth/me endpoint returns selected tokens with JWT
  • Token revocation support
  • Refresh token support

Includes dummy_app simulating a partner (DS) for testing.

https://www.loom.com/share/1c050660e244444683b2ba6f22769d54

@skelz0r skelz0r self-assigned this Jan 16, 2026
@skelz0r skelz0r force-pushed the features/oauth-connect branch 3 times, most recently from b5a0ca9 to 5222e9b Compare January 17, 2026 15:08
@JeSuisUnCaillou
Copy link
Copy Markdown
Contributor

C'est bizarre que je choisisse mon orga dans Proconnect l'ADEME), puis que je puisse transférer 2 jetons de 2 (autres) orgas dans admin (lyon et bordeaux).

(Et la liste des scopes de chaque jeton est moche, mais c'est pas très grave).

La cinématique est très bien, mais tout le vocabulaire de "transfert de jeton" me laisse 🤔 . Je pense que c'est trop technique, et qu'on devrait parler d' "intégration API Entreprise" et de "Autoriser DS à utiliser mon accès API Entreprise".

Idéalement, le end-user a pas besoin de savoir ce qu'est un jeton ni même que ça existe.

@skelz0r
Copy link
Copy Markdown
Member Author

skelz0r commented Jan 19, 2026

C'est bizarre que je choisisse mon orga dans Proconnect l'ADEME), puis que je puisse transférer 2 jetons de 2 (autres) orgas dans admin (lyon et bordeaux).

Sur API E/P on ne fait aucune disjonction actuellement : t'es demandeur tu vois toutes tes habilitations, même si t'as N organisations.

(Et la liste des scopes de chaque jeton est moche, mais c'est pas très grave).

Oui, mais on n'a pas les valeurs humanized 😅
Je vais mettre le lien vers la demande DataPass + juste mettre l'intitulé et numéro

La cinématique est très bien, mais tout le vocabulaire de "transfert de jeton" me laisse 🤔 . Je pense que c'est trop technique, et qu'on devrait parler d' "intégration API Entreprise" et de "Autoriser DS à utiliser mon accès API Entreprise".

Idéalement, le end-user a pas besoin de savoir ce qu'est un jeton ni même que ça existe.

En effet c'est clairement mieux.

J'itère.

Allow software vendors (like Démarches Simplifiées) to retrieve
API Entreprise tokens from users with their explicit consent.

Flow:
1. User clicks "Connect API Entreprise" on partner app
2. Redirected to custom OAuth login page
3. Authenticates via ProConnect (government SSO)
4. Selects which tokens to share on consent page
5. Redirected back with authorization code
6. Partner exchanges code for access/refresh tokens
7. Partner calls /oauth/me to get selected API tokens (with JWT)

Key features:
- Custom OAuth login page with partner name
- Token selection during consent
- /oauth/me endpoint returns selected tokens with JWT
- Token revocation support
- Refresh token support

Includes dummy_app simulating a partner (DS) for testing.
@skelz0r skelz0r force-pushed the features/oauth-connect branch from 5222e9b to af96983 Compare January 19, 2026 17:10
@skelz0r
Copy link
Copy Markdown
Member Author

skelz0r commented Jan 19, 2026

J'ai itéré, surprise demain.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants